Biblioteka PySide zapewnia dostęp do wieloplatformowego zestawu narzędzi graficznego interfejsu użytkownika (GUI) Qt z poziomu Pythona. Qt jest zbiorem bibliotek w C++, ale dzięki PySide te same komponenty można używać z Pythona. Każdy interfejs graficzny, który można utworzyć w C++, można również tworzyć i modyfikować w Pythonie. Zaletą używania Pythona jest to, że interfejsy Qt można rozwijać i testować na żywo, ponieważ nie musimy kompilować plików źródłowych.
Podczas instalacji programu FreeCAD powinny być zainstalowane zarówno Qt, jak i PySide jako część pakietu. Jeśli samodzielnie kompilujesz program, musisz upewnić się, że obie biblioteki są zainstalowane, aby FreeCAD działał poprawnie. Oczywiście PySide będzie działać tylko wtedy, gdy obecne jest Qt.
W przeszłości FreeCAD używał PyQt, innej biblioteki powiązań Qt dla Pythona, ale w 2013 roku (commit 1dc122dc9a) projekt przeszedł na PySide, ponieważ posiada ono bardziej liberalną licencję.
Aby uzyskać więcej informacji, zobacz strony:
Przykłady stworzone z PySide. Po lewej: proste okno dialogowe. Po prawej: bardziej złożone okno dialogowe z wykresami.
FreeCAD został opracowany z myślą o używaniu Pythona 2 i Qt4. W miarę jak te dwie biblioteki stały się przestarzałe, FreeCAD przeszedł na Pythona 3 i Qt5. W większości przypadków przejście to odbyło się bez konieczności łamania kompatybilności wstecznej.
Zazwyczaj moduł PySide
zapewnia wsparcie dla Qt4, podczas gdy PySide2
zapewnia wsparcie dla Qt5. Jednak w FreeCAD nie ma potrzeby bezpośredniego używania PySide2
, ponieważ dołączony jest specjalny moduł PySide
, który obsługuje Qt5.
Ten moduł PySide
znajduje się w katalogu Ext/
instalacji FreeCAD skompilowanej dla Qt5.
/usr/share/freecad/Ext/PySide
Moduł ten po prostu importuje niezbędne klasy z PySide2
i umieszcza je w przestrzeni nazw PySide
. Oznacza to, że w większości przypadków ten sam kod może być używany zarówno z Qt4, jak i Qt5, pod warunkiem korzystania z pojedynczego modułu PySide
.
PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools
Jedynym nietypowym aspektem jest to, że klasy PySide2.QtWidgets
są umieszczone w przestrzeni nazw PySide.QtGui
.
PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox
Przykłady PySide są podzielone na 3 części, różniące się stopniem zaawansowania w zakresie PySide, Pythona i wewnętrznych mechanizmów FreeCAD. Pierwsza strona zawiera przegląd PySide; druga i trzecia strona to w większości przykłady kodu na różnych poziomach.
Oczekuje się, że te przykłady będą pomocne na początek, a następnie użytkownik może korzystać z innych zasobów dostępnych online lub z oficjalnej dokumentacji.
Istnieją pewne różnice w obsłudze widżetów w Qt4 (PySide) i Qt5 (PySide2). Programista powinien być świadomy tych niezgodności i w razie problemów sprawdzić oficjalną dokumentację, jeśli coś nie działa zgodnie z oczekiwaniami na danej platformie. Niemniej jednak, Qt4 jest uważane za przestarzałe, więc większość rozwoju powinna być skierowana na Qt5 i Pythona 3.
Dokumentacja PySide odnosi się do klas w stylu Pythona; jednak ponieważ Qt jest pierwotnie biblioteką C++, te same informacje powinny być dostępne w odpowiedniej dokumentacji C++.